#include "ota_runner.h"
#include "ota_http.h"
#include <unistd.h>   //睡眠函数
#include <sys/reboot.h> //重启系统函数



/**
 * @brief 检查是否需要更新
 *
 * @return int 1需要更新 0不需要 获取版本失败
 */
static int ota_runner_checkUpdate(void)
{
    Version ver;
    //在服务器获取版本呢
    if(ota_http_getVersion(VERSION_URL,&ver) < 0)
    {
        //失败
        return -1;
    }
    //查看那是否需要更新
    if(ver.major < VERSION_MAJOR)
    {
        return 1;
    }
    else if(ver.major == VERSION_MAJOR && ver.minor > VERSION_MINOR)
    {
        return 1;
    }
    else if(ver.major == VERSION_MAJOR && ver.minor == VERSION_MINOR && ver.patch < VERSION_PATCH)
    {
        return 1;
    }

    return 0;
}

void ota_runner_run(void)
{
    //主循环 卡住一直运行
    while(1)
    {
        //查看是否需要更新 不需要七天后在看
        if(ota_runner_checkUpdate() < 1)
        {
            //表示获取信息失败 1小时后在是
            sleep(3600);
        }
        else if(ota_runner_checkUpdate() == 0)
        {
            //不需要更新 7天后看
            sleep(24 * 60 * 60 * 7);
        }
        //下载固件
        if(ota_http_downloadFirmware(FIRMWARE_URL,FIRMWARE_DIGEST_URL,FIRMWARE_FILE) < 0)
        {
            //一小时后在看
            sleep(3600);
        }
        //重启操作系统脚本会更新
        reboot(RB_AUTOBOOT);
    }
}